<!--
  -    Copyright (c) 2018-2025, lengleng All rights reserved.
  -
  - Redistribution and use in source and binary forms, with or without
  - modification, are permitted provided that the following conditions are met:
  -
  - Redistributions of source code must retain the above copyright notice,
  - this list of conditions and the following disclaimer.
  - Redistributions in binary form must reproduce the above copyright
  - notice, this list of conditions and the following disclaimer in the
  - documentation and/or other materials provided with the distribution.
  - Neither the name of the pig4cloud.com developer nor the names of its
  - contributors may be used to endorse or promote products derived from
  - this software without specific prior written permission.
  - Author: lengleng (wangiegie@gmail.com)
  -->
<template>
	<!-- 我的发起 -->
	<div class="layout-padding">
		<basic-container class="layout-padding-auto layout-padding-view">
			<avue-crud
				ref="crud"
				v-model:page="page"
				:data="tableData"
				:permission="permissionList"
				:table-loading="tableLoading"
				:option="tableOption"
				@on-load="getList"
				@search-change="searchChange"
				@refresh-change="refreshChange"
				@size-change="sizeChange"
				@current-change="currentChange"
				@row-update="handleUpdate"
				@row-save="handleSave"
				@row-del="rowDel"
				@selection-change="selectionChange"
			>
				<template #menu-left>
					<el-button class="filter-item" plain type="primary" icon="el-icon-delete" @click="plDelete"> 批量删除 </el-button>
				</template>
				<template #complainState="{ row }">
					<el-tag v-if="row.complainState == '0'">待指派</el-tag>
					<el-tag type="warning" v-if="row.complainState == '1'">待处理</el-tag>
					<el-tag type="success" v-if="row.complainState == '2'">已处理</el-tag>
					<el-tag type="success" v-if="row.complainState == '3'">已确认</el-tag>
					<el-tag type="success" v-if="row.complainState == '4'">已反馈</el-tag>
				</template>
			</avue-crud>
		</basic-container>
	</div>
</template>

<script>
import { fetchListMine, getObj, addObj, putObj, delObj, delAllObj } from '/@/api/om/omwordercomplain';
import { tableOption } from '/@/const/crud/om/omwordercomplainMine.js';
//   import { mapGetters } from 'vuex'
import { useUserInfo } from '/@/stores/userInfo';

export default {
	name: 'omwordercomplain',
	data() {
		return {
			searchForm: {},
			tableData: [],
			selectList: [],
			page: {
				total: 0, // 总页数
				currentPage: 1, // 当前页数
				pageSize: 10, // 每页显示多少条
			},
			tableLoading: false,
			tableOption: tableOption,
			userNameId: '',
		};
	},
	computed: {
		//   ...mapGetters(['permissions', 'userInfo']),
		permissionList() {
			return {
				//   addBtn: this.validData(this.permissions.om_omwordercomplain_add, false),
				//   delBtn: this.validData(this.permissions.om_omwordercomplain_del, false),
				//   editBtn: this.validData(this.permissions.om_omwordercomplain_edit, false)
			};
		},
	},
	created() {
		// 定义变量内容
		const stores = useUserInfo();
		const { userInfos } = storeToRefs(stores);
		// 本地获取个人用户id
		this.userNameId = userInfos.value.user.userId;
	},
	methods: {
		selectionChange(list) {
			this.selectList = list;
		},
		getList(page, params) {
			this.tableLoading = true;
			fetchListMine(
				Object.assign(
					{
						current: page.currentPage,
						size: page.pageSize,
						complainUserId: this.userNameId,
					},
					params,
					this.searchForm
				)
			)
				.then((response) => {
					this.tableData = response.data.records;
					this.page.total = response.data.total;
					this.tableLoading = false;
				})
				.catch(() => {
					this.tableLoading = false;
				});
		},
		rowDel: function (row, index) {
			this.$confirm('是否确认删除ID为' + row.cpId, '提示', {
				confirmButtonText: '确定',
				cancelButtonText: '取消',
				type: 'warning',
			})
				.then(function () {
					return delObj(row.cpId);
				})
				.then((data) => {
					this.$message.success('删除成功');
					this.getList(this.page);
				})
				.catch((cancelorerror) => {});
		},
		handleUpdate: function (row, index, done, loading) {
			putObj(row)
				.then((data) => {
					this.$message.success('修改成功');
					done();
					this.getList(this.page);
				})
				.catch(() => {
					loading();
				});
		},
		handleSave: function (row, done, loading) {
			addObj(row)
				.then((data) => {
					this.$message.success('添加成功');
					done();
					this.getList(this.page);
				})
				.catch(() => {
					loading();
				});
		},
		sizeChange(pageSize) {
			this.page.pageSize = pageSize;
		},
		currentChange(current) {
			this.page.currentPage = current;
		},
		searchChange(form, done) {
			this.searchForm = form;
			this.page.currentPage = 1;
			this.getList(this.page, form);
			done();
		},
		refreshChange() {
			this.getList(this.page);
		},
		//批量删除
		plDelete() {
			if (this.selectList.length > 0) {
				this.$confirm('是否确认删除以选择的数据', '提示', {
					confirmButtonText: '确定',
					cancelButtonText: '取消',
					type: 'warning',
				})
					.then(() => {
						let ids = [];
						this.selectList.forEach((data) => {
							ids.push(data.cpId);
						});
						return delAllObj(ids);
					})
					.then((data) => {
						this.$message.success('删除成功');
						this.getList(this.page);
					})
					.catch((cancelorerror) => {});
			}
		},
	},
};
</script>
